<?php

namespace App\Http\Controllers;

use App\Member;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;

class UserController extends Controller
{
    public function cudr($id=null){

//        $user =  Users::getUserInfo();


//        return view('member.info',[
//            'name' => $user,
//            'age' => 18
//        ]);

//        $users = DB::select('select * from users');
//        dump($users);

//        $status = DB::insert('insert into users(account,password,nickname) values (?,?,?)',['18116473100','123456','小黑']);
//        dump($status);

//        $u_status = DB::update('update users set nickname = ? WHERE id = ?',['小白',2]);
//        dump($u_status);

//        $d_status = DB::delete('delete from users where id = ?',[2]);
//        dump($d_status);


        //查询构造器
//        $this->query1(); //插入数据
//        $this->query2(); //更新数据
//        $this->query3(); //删除数据
//        $this->query4(); //查询数据
//        $this->query5(); //聚合函数

        //orm查询
//        $this->orm1();  //查询
//        $this->orm2();  //数据操作
//        $this->orm3();  //更新
        $this->orm4();  // 删除数据
    }

    public function orm4(){
        //通过模型删除
//        $user = Member::find(25);
//        $bool = $user->delete();

        //主键删除
//        $num = Member::destroy(24);
//        $num = Member::destroy(20,21);
//        $num = Member::destroy([17,23]);
//        $num = Member::where('id','>',15)->delete();
    }


    public function orm3(){
        //通过模型更新数据
//        $user = Member::find('25');
//        $user->account = 'asldlas';
//        $bool = $user->save();

//        $num = Member::where('id','>',1)->update([
//           'gold' => 20
//        ]);

//        Member::where('id','>',1)->increment('gold',100);

    }

    public function orm2(){
        //新增数据
        $User = new Member();
//        $User->account = '小蓝';
//        $User->password = '123456';
//        $bool = $User->save();
        //新增数据2
//        $data = Member::create([
//            'account'=>'0022203', 'password'=>'123456'
//        ]);

        //以属性查询用户，有则返回用户，若没有按属性保存新的用户并返回
//        $data = Member::firstOrCreate(
//            ['account'=>'imoocs']
//        );
        //以属性查询用户，若没有则建立新的实例，需自己保存调用save
//        $user = Member::firstOrNew(
//            ['account'=>'imoocss']
//        );
//        $bool = $user->save();
//        dump($bool);

    }


    public function orm1(){
//        $data = Member::all();
        $data = Member::find(16);
        echo ($data->updated_at);
//        $data = Member::findOrFail(2); //主键查询不到就抛出异常

        //查询构造器也可以在orm中使用
//        Member::chunk(2,function($data){
//            dump($data);
//            echo '<br>';
//        });
//        $data = Member::orderBy('id','desc')->first(); //获取结果集中的第一条数据
//        $data = Member::whereRaw('id > ? and gold > ? ',[1,100])->get(); //多条件查询
//        echo Member::count();
//        echo Member::sum('gold');  //和
//        echo Member::max('gold');   //最大
    }


    public function query5(){
//        echo DB::table('users')->count();
//        echo DB::table('users')->sum('gold');  //和
//        echo DB::table('users')->max('gold');   //最大
//        echo DB::table('users')->min('gold');  //最小
        echo DB::table('users')->avg('gold');   //平均
    }


    public function query4(){
//        $data = DB::table('users')->get();
//        $data = DB::table('users')->where('id','>', 1)->get();
//        $data = DB::table('users')->orderBy('id','desc')->first(); //获取结果集中的第一条数据
//        $data = DB::table('users')->whereRaw('id > ? and gold > ? ',[1,100])->get(); //多条件查询
//        $data = DB::table('users')->pluck('account','id'); //返回某个字段或键值对
//        $data = DB::table('users')->lists('account','id'); //返回某个字段,键值对
//        $data = DB::table('users')->select('id','account')->get();  //返回指定字段

        //分段查询，每次查询两条
//        DB::table('users')->chunk(2,function($data){
//            dump($data);
//            echo '<br>';
//
//            //退出查询
////            return false;
//        });
    }


    public function query3(){
//        $num = DB::table('users')->where('id',8)->delete();
//        $num = DB::table('users')->where('id','>=',8)->delete();  //删除条件
//        dump($num);
    }

    public function query2(){
//        $num =  DB::table('users')->update(['password'=>'112221111']);
//        $num =  DB::table('users')->where(['id'=>1])->update(['password'=>'111111']);
//        $num = DB::table('users')->increment('gold');  //自增1
//        $num = DB::table('users')->increment('gold',100);
//        $num = DB::table('users')->where('id',1)->increment('gold',100);
//        $num = DB::table('users')->where('id',1)->decrement('gold'); //自减1
//        $num = DB::table('users')->where('id',1)->decrement('gold',55);
//        $num = DB::table('users')->where('id',1)->decrement('gold',10,['account'=>2222,'password'=>123456789]); //自减并更新
//        dump($num);
    }

    public function query1(){
//        $bool =  DB::table('users')->insert([
//            ['account'=>'0001', 'password'=>'123456'],
//            ['account'=>'0002', 'password'=>'123456']
//        ]);
//            $bool =  DB::table('users')->insert([
//                'account'=>'0003', 'password'=>'123456'
//            ]);
//        $id =  DB::table('users')->insertGetId([
//                'account'=>'111', 'password'=>'123456'
//            ]);
    }




    public function index(){
//        $users = Member::all();
        $users = [];
        $name = 'liuyang';
        $arr = ['liuyang','lisi'];
        return view('member.index',[
            'name'=>$name,
            'arr' => $arr,
            'users' => $users
        ]);
    }

    public function testUrl(){
        echo '111111111';
    }


    public function request1(Request $request){

        //接收请求参数  http://localhost:8888/public/request1?name=liuyang
        echo $request->input('name').'<br/>';
        echo $request->input('sex','not value').'<br/>';

        if($request->has('name')){
            echo $request->input('name').'<br/>';
        }else{
            echo '无该参数'.'<br/>';
        }

        dump($request->all());    //获取所有参数

        echo $request->method().'<br/>'; //判断请求类型
        if($request->isMethod('POST')){
            echo 'YES'.'<br/>';
        }else{
            echo 'NO'.'<br/>';
        }
        if($request->ajax()){
            echo 'YES Ajax'.'<br/>';
        }else{
            echo 'No Ajax'.'<br/>';
        }

        //判断请求url是否符合需求
        //http://localhost:8888/public/aaa/request1?name=ads&sex=nan   true
        //http://localhost:8888/public/request1?name=ads&sex=nan   false
        $res = $request->is('aaa/*');
        dump($res);
    }


    public function session1(Request $request){
        //1.HTTP request session()
//        $request->session()->put('name','liuyangsss');
//        echo $request->session()->get('name');

        //2.session()
//        session()->put('name','zhangsan');
//        echo session()->get('name');

        //3.Session
//        Session::put('name','lisi');
//        echo Session::get('name');
//        echo Session::get('name1','default'); //不存在显示默认的
//        Session::put(['name'=>'dddd']);   //以数组的形式存储
//        echo Session::pull('name'); //取完数据就删除
//        dump(Session::all()); //取出所有session

        //判断session某个Key是否存在
//        if(Session::has('name10')){
//            dump(Session::all());
//        }else{
//            echo '不存在';
//        }

        //根据key删除session
//        Session::forget('name2');
        //清空所有session
//        Session::flush();

        //暂存数据，只有第一次访问存在
//        Session::flash('zc','dasdasd');
//        echo Session::get('zc');
    }

    public function session2(Request $request){
        return  Session::get('message','暂无信息');
    }

    /**
     * 响应数据
     */
    public function response(){
        //响应json
//        $data = [
//            'name'=>'小米',
//            'price'=>1123,
//        ];
//        return response()->json($data);

        //重定向,并传值，本方法和session2需在同一分组，不然传值会失败
//        return redirect('session2')->with('message','我是暂存数据');
//        return redirect()->action('UserController@session2')->with('message','我是暂存数据');
//        return redirect()->route('s2')->with('message','我是暂存数据');
        //返回上一页面
//        return redirect()->back();
    }


    public function activity1(){
        echo '活动宣传页面';
    }

    public function activity2(){
        echo '活动进行中，感谢你的参与1';
    }

    public function activity3(){
        echo '活动进行中，感谢你的参与2';
    }
}
